Лабораторная работа №4.
2025-09-27
Приобретение практических навыков по установке и базовому конфигурированию HTTP-сервера Apache.
Установите необходимые для работы HTTP-сервера пакеты.
Запустите HTTP-сервер с базовой конфигурацией и проанализируйте его работу.
Настройте виртуальный хостинг.
Напишите скрипт для Vagrant, фиксирующий действия по установке и настройке HTTP-сервера во внутреннем окружении виртуальной машины server. Соответствующим образом внесите изменения в Vagrantfile.
HTTP (HyperText Transfer Protocol) — протокол передачи данных в сети, основанный на модели «клиент–сервер». Гипертекст — это текст со ссылками на другие записи или страницы.
HTTP-сервер (например, Apache, nginx, Lighttpd) принимает запросы и отправляет ответы. HTTP-клиент (браузер или веб-приложение) отправляет запросы и получает ответы.
В Linux для работы с HTTP используется демон httpd. Основной конфигурационный файл Apache — httpd.conf, где задаются директивы для управления сервером.
Для начала лабораторной работы я запускаю вм server. Далее перехожу к моему пользователю и и перехожу в режим суперпользователя. Затем установливаю из репозитория стандартный веб-сервер (HTTP-сервер и утилиты httpd,криптоутилиты и пр.)
Установка веб-сервера
Перейдем в каталог /etc/httpd/conf, там мы видим конфигурационный файл httpd.conf.
httpd.conf
В файле httpd.conf описываются основные параметры работы веб-сервера Apache.
Общие параметры сервера
В httpd.conf существуют такие группы настроек:
ServerRoot — корневой каталог Apache.
PidFile — файл с идентификатором процесса сервера.
Timeout — время ожидания ответов.
Сетевые настройки
Listen — IP-адрес и порт для приёма запросов.
ServerName — имя сервера (домен или хост).
Документы и каталоги
DocumentRoot — корневой каталог сайта.
Alias — создание псевдонимов для каталогов.
Права и безопасность
AllowOverride — разрешение или запрет использования .htaccess.
Require — кто может получать доступ (например, all granted или по IP).
Модули
LoadModule — подключение дополнительных модулей (например, PHP, SSL).
Логирование
ErrorLog — файл с ошибками.
CustomLog — файл с журналом запросов.
Виртуальные хосты
Далее перейдем в каталог /etc/httpd/conf.d. Просмотрим все конфигурационные файлы.
autoindex.conf
autoindex.conf
Файл autoindex.conf в Apache описывает настройки модуля mod_autoindex, который отвечает за автоматическую генерацию индексных страниц при доступе к директориям без файла index.html или index.php.
В autoindex.conf задаются:
Включение/отключение генерации списков каталогов: Options +Indexes
или отключение: Options -Indexes
Формат отображения списков:
FancyIndexing — красивый вывод с иконками и дополнительной информацией.
HeaderName — указание файла, который будет отображаться вверху списка (например, HEADER.html).
ReadmeName — файл с дополнительной информацией внизу списка.
Сортировка и отображение информации о файлах:
IndexOptions — набор опций для вывода:
NameWidth=* — ширина столбца имени файла
SuppressDescription — скрыть описания файлов
SuppressHTMLPreamble — убрать стандартный HTML-шаблон
Иконки для файлов и папок:
Настройка, какие иконки показывать для разных типов файлов (AddIcon, AddIconByEncoding и т.д.) распиши это в виде абзацев
fcgid.conf
В этом файле fcgid.conf содержится конфигурация Apache для модуля mod_fcgid, который обеспечивает поддержку FastCGI.
В комментариях указано назначение файла — настройка FastCGI через mod_fcgid и ссылка на документацию.
Строка
AddHandler fcgid-script fcg fcgi fpl
говорит, что файлы с расширениями .fcg, .fcgi и .fpl должны обрабатываться как FastCGI-скрипты.
Далее задаются пути для служебных файлов:
FcgidIPCDir /run/mod_fcgid FcgidProcessTableFile /run/mod_fcgid/fcgid_shm
FcgidIPCDir — директория для сокетов, через которые Apache взаимодействует с FastCGI-процессами.
FcgidProcessTableFile — файл для хранения таблицы процессов и разделяемой памяти, нужной для работы FastCGI.
manual.conf
В файле manual.conf настроен доступ к встроенной документации Apache.
Директива
Alias /manual /usr/share/httpd/manual
указывает, что при обращении к адресу http://localhost/manual/ сервер будет выдавать файлы из каталога /usr/share/httpd/manual.
В блоке
Options Indexes — разрешает показ списка файлов, если нет индексной страницы.
AllowOverride None — отключает переопределение настроек через .htaccess.
Require all granted — открывает доступ всем пользователям.
Директива
выполняет перенаправление: если пользователь заходит на документацию с указанием языка (например, /manual/ru/), его перенаправляют на общий путь /manual/….
ssl.conf
Файл ssl.conf — это конфигурация Apache для поддержки SSL/TLS (HTTPS).
В нём указываются:
Включение SSL для виртуального хоста:
<VirtualHost *:443> SSLEngine on
Путь к сертификату и приватному ключу:
SSLCertificateFile /etc/pki/tls/certs/server.crt
SSLCertificateKeyFile /etc/pki/tls/private/server.key
(Опционально) цепочка сертификатов:
SSLCertificateChainFile /etc/pki/tls/certs/ca-bundle.crt
Протоколы и шифры, которые разрешены или запрещены:
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite HIGH:!aNULL:!MD5
Настройки виртуальных хостов на 443 порту (аналогично httpd.conf, но с поддержкой SSL).
Параметры безопасности, например:
использование только надёжных шифров,
включение HSTS,
запрет слабых протоколов (SSLv2, SSLv3).
userdir.conf
Файле userdir.conf задаются параметры работы модуля mod_userdir, который позволяет отображать содержимое личных веб-папок пользователей (обычно ~/public_html) по URL типа http://site/~username/.
Обёртка <IfModule mod_userdir.c> — настройки применяются только если модуль включён.
UserDir disabled — функциональность отключена по умолчанию (чтобы не раскрывать наличие пользователей на системе). В комментариях показано, как её включить: заменить строку на UserDir public_html.
Блок <Directory “/home/*/public_html”> — правила доступа для всех public_html в домашних каталогах:
AllowOverride FileInfo AuthConfig Limit Indexes — какие директивы из .htaccess разрешено переопределять;
Options MultiViews Indexes SymLinks IfOwnerMatch Includes NoExec — набор опций (мультипросмотры, индексирование каталогов, симлинки, включаемые файлы и запрет выполнения бинарников и т.п.);
Require method GET POST OPTIONS — какие HTTP-методы разрешены (здесь только чтение/отправка форм и preflight).
welcome.conf
Файл welcome.conf управляет отображением стандартной стартовой страницы Apache (“Welcome page”). Первый блок описывает, что если пользователь заходит на корневой URL (/), а индексного файла нет, сервер отдаст страницу .noindex.html из системного каталога. Второй блок разрешает доступ ко всем файлам в каталоге /usr/share/httpd/noindex, где хранится шаблон “Welcome page”.
Директивы Alias создают псевдонимы, чтобы сервер мог найти файлы для отображения стандартной страницы:
/.noindex.html → /usr/share/httpd/noindex/index.html` (сама страница приветствия)
/poweredby.png → /usr/share/httpd/icons/apache_pb3.png` (иконка Apache)
/system_noindex_logo.png → /usr/share/httpd/icons/system_noindex_logo.png` (логотип системы).
Внесем изменения в настройки межсетевого экрана узла server, разрешив работу с http.
Настройка межсетевого экрана
Настройка межсетевого экрана
В дополнительном терминале запустим в режиме реального времени расширенный лог системных сообщений, чтобы проверить корректность работы системы.
Расширенный лог системных сообщений
В первом терминале активируем и запустите HTTP-сервер.
Запуск HTTP-сервера
Просмотрев расширенный лог системных сообщений, мы видим, что веб-сервер успешно запустился.
Расширенный лог системных сообщений
Далее запустим вм client. А на вм server просмотрим лог ошибок работы веб-сервера.
Лог ошибок работы веб-сервера
На виртуальной машине server запустим мониторинг доступа к веб-серверу.
Мониторинг доступа к веб-серверу
На виртуальной машине client запустим браузер и в адресной строке введем 192.168.1.1. Мы видим, что на экране появилась страничка http server test page.
http server test page
Настроим виртуальный хостинг по двум DNS-адресам: server.antoychubekova.net и www.antoychubekova.net. Остановим работу DNS-сервера для внесения изменений в файлы описания DNS-зон.
Остановка работы DNS-сервера
Добавьте запись для HTTP-сервера в конце файла прямой DNS-зоны /var/named/master/fz/antoychubekova.net
Редактирование DNS-зоны
И в конце файла обратной зоны /var/named/master/rz/192.168.1.
Редактирование обратной DNS-зоны
Удалим файлы журналов DNS: antoychubekova.net.jnl и 192.168.1.jnl.
Удаление журналов
Перезапустим DNS-сервер.
Перезапуск DNS-сервера
В каталоге /etc/httpd/conf.d создадим файлы server.antoychubekova.net.conf и www.antoychubekova.antoychubekova.conf.
Создание конфигурационных файлов
Откроем на редактирование файл server.antoychubekova.antoychubekova.conf и внесем некоторые изменения.
Редактирование server.antoychubekova.net.conf
Откроем на редактирование файл www.antoychubekova.net.conf и внесем некоторые изменения.
Редактирование www.antoychubekova.net.conf
Перейдем в каталог /var/www/html, в котором должны находиться файлы с содержимым (контентом) веб-серверов, и создадим тестовые страницы для виртуальных веб-серверов server.antoychubekova.net и www.antoychubekova.net.
Для виртуального веб-сервера server.antoychubekova.net.
Создание тестовой страницы
Откроем на редактирование файл index.html и внесем следующее содержание: Welcome to the server.antoychubekovar.net server.
Редактирование index.html
Для виртуального веб-сервера www.antoychubekova.net.
Создание тестовой страницы
Откроем на редактирование файл index.html и внесем следующее содержание: Welcome to the www.antoychubekova.net.
Редактирование index.html
Скорректируем права доступа в каталог с веб-контентом. Восстановим контекст безопасности в SELinux. Перезапустим HTTP-сервер.
Запуск HTTP-сервера
На виртуальной машине client убедимся в корректном доступе к веб-серверу по адресам server.antoychubekova.net и www.antoychubekova.net в адресной строке веб-браузера. Мы видим, что странички успешно открываются.
Страница server.antoychubekova.net
Страница www.antoychubekova.net
На виртуальной машине server перейдем в каталог для внесения изменений в настройки внутреннего окружения /vagrant/provision/server/, создадим в нём каталог http, в который поместим в соответствующие подкаталоги конфигурационные файлы HTTP-сервера.
Конфигурационные файлы HTTP-сервера
Заменим конфигурационные файлы DNS-сервера.
Замена конфигурационных файлов DNS-сервера
В каталоге /vagrant/provision/server создадим исполняемый файл http.sh.
Создание исполняемого файла
Открыв его на редактирование, пропишим в нём скрипт, который по сути, повторяет произведённые нами действия по установке и настройке HTTP-сервера.
Редактирование исполняемого файла
Для отработки созданного скрипта во время загрузки виртуальных машин в конфигурационном файле Vagrantfile необходимо добавить в конфигурации сервера следующую запись:
server.vm.provision “server http”,
type: “shell”,
preserve_order: true,
path: “provision/server/http.sh”
Редактирование Vagrantfile